package com.qf.InternetProgram;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class B {
	
	public static void main(String[] args) {
		getMessageByServerSocket();
		//程序B
	}
	public static void getMessageByServerSocket() {
		
		try {
			//1.创建一个网络服务，等待A连接
			ServerSocket serverSocket = new ServerSocket(11112);
			
			System.out.println("【B1】创建成功网络服务，等待连接...");
			//2.让网络服务处于等待接收请求状态
			//相当于B不断发出信号等待A连接
			Socket socket = serverSocket.accept();
			
			InputStream is = socket.getInputStream();
			
			OutputStream os = socket.getOutputStream();
			
			System.out.println("【B2】与A匹配连接成功...");
			
			//输入的字节流转换为字符流
			InputStreamReader inputReader = new InputStreamReader(is);
			
			BufferedReader br = new BufferedReader(inputReader);
			
			//输出的字节流转换为字符流
			PrintWriter pw = new PrintWriter(os);
			
			Scanner sc = new Scanner(System.in);
			
			
			//5.B程序接收程序A的消息
			String s ;
			String endSign="";
			do{
				
				s=br.readLine();
				System.out.println("【B3】读取A程序给B程序发的消息："+s);
				
				//socket.shutdownInput();
				
				//6.程序B给程序A回复消息
				System.out.println("【B4】请输入给A程序的回复消息：");
				s = sc.nextLine();
				pw.println(s);
				pw.flush();

				System.out.println("服务器一轮会话结束...");
			}while(!(s.equals("bye"))) ;
			
			
			//找了一个小时的异常，这里的问题，一直在A里面找问题..
			//最后发现是B里面的错误，用完读入和写入需要关闭SOCKET
			//socket.close();
			
			
		
			
			
			
			
		}catch(IOException e) {
			
			System.out.println("IO流交换时发生异常...");
			e.printStackTrace();
		}
		
	}

}
